home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / procssng / alv.sun / alv.lha / src / halftone.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-08  |  1.7 KB  |  66 lines

  1. #include <stdio.h>
  2. #include "defs.h"
  3. #include "pattern.h"
  4.  
  5. har           *progname;
  6. har           *filename;
  7. ixrect        *pr1, *pr2;
  8.  
  9. #ifdef STANDALONE
  10. ain(argc, argv, envp)
  11. #else
  12. alftone_main(argc, argv, envp)
  13. #endif
  14.     int             argc;
  15.     char          **argv;
  16.     char          **envp;
  17. {
  18.     register int    i, j;
  19.     int             x, y;
  20.     int            *p_pat;
  21.     Pixrect        *pattern;
  22.     int             bs_cu;
  23.  
  24.     progname = strsave(argv[0]);
  25.     parse_profile(&argc, argv, envp);
  26.  
  27.     while ((gc = getopt(argc, argv, " ")) != EOF)
  28.         switch (gc) {
  29.         case '?':
  30.             errflag++;
  31.             break;
  32.         }
  33.  
  34.     if (errflag)
  35.         error((char *) 0, "Usage: %s: [infile] [outfile]\n", progname);
  36.  
  37.     for (stream = 0; optind < argc; stream++, optind++)
  38.         if (stream < 2 && strcmp(argv[optind], "-") != 0)
  39.             if (freopen(argv[optind], mode[stream], f[stream]) == NULL)
  40.                 error("%s %s", PR_IO_ERR_INFILE, argv[optind]);
  41.  
  42.     if ((pr1 = pr_load(stdin, NULL)) == NULL)
  43.         error(PR_IO_ERR_RASREAD);
  44.  
  45.     if (pr1->pr_depth != 8)
  46.         error("image not 8 bits deep");
  47.  
  48.     if ((pattern = mem_create(BOXSIZE, BOXSIZE * 50, 1)) == NULL)
  49.         error("mem_create returned NULL");;
  50.  
  51.     if ((pr2 = mem_create(pr1->pr_size.x * BOXSIZE, pr1->pr_size.y * BOXSIZE, 1)) == NULL)
  52.         error("mem_create returned NULL");
  53.  
  54.     p_pat = &pat[0];
  55.     for (y = 0; y < BOXSIZE * 10; y++)
  56.         for (x = 0; x < BOXSIZE; x++, p_pat++)
  57.             pr_rop(pattern, x, y, 1, 1, (*p_pat) ? PIX_CLR : PIX_SET, (Pixrect *) 0, 0, 0);
  58.  
  59.     bs_cu = BOXSIZE * BOXSIZE * BOXSIZE;
  60.     for (j = 0; j < pr1->pr_size.y; j++)
  61.         for (i = 0; i < pr1->pr_size.x; i++)
  62.             pr_rop(pr2, i * BOXSIZE, j * BOXSIZE, BOXSIZE, BOXSIZE, PIX_SRC, pattern, 0, BOXSIZE * ((pr_get(pr1, i, j) + (bs_cu - 1)) / bs_cu));
  63.  
  64.     pr_dump(pr2, stdout, NULL, RT_STANDARD, 0);
  65. }
  66.